package com.limin.commanser.mapper;

import com.limin.commanser.dto.CommunityDto;
import com.limin.commanser.dto.JoinCommunityDto;
import com.limin.commanser.entity.Community;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


@Repository
public interface CommunityMapper {
    /**
     * 查询所有社团信息
     * @return Community>
     */
    List<Community> findAll();

    /**
     * 添加社团
     *  管理员不需要通审核直接添加
     *  其他用户添加需要管理员审核
     * @param community 社团
     * @return Community
     */
    Integer add(Community community);


    /**
     * 修改社团信息
     * 管理员呢本社团管理员可以修改
     * @param community  社团
     *
     */
    void modify(Community community);

    /**
     * 模糊查询社团信息
     * @param communityName 社团名称
     * @return
     */
    List<Community> findAllByCommunityName(String communityName);

    /**
     * 管理员根据ID删除社团信息
     * @param communityId 社团ID
     *
     */
    void removeById(@Param("communityId") Integer communityId);

    /**
     * 获取社团表总记录条数
     * @return Integer
     */
    Integer findTotal();


    /**
     * 根据登录用户查询我的社团信息
     * @param communityId  社团ID
     * @return Community
     */
    Community findById(@Param("communityId") Integer communityId);


    /**
     * 管理员审核
     * @param community `
     *
     */
    void approvalCommunity(Community community);

    /**
     * 分页查询
     * @param params  查询参数
     * @return Community>
     */
    List<CommunityDto> findAllByPaging(Map<Object,Object> params);

    /**
     *报名参加招新
     * @return void
     */
    void joinCommunity(JoinCommunityDto joinCommunityDto);
    void joinCommunityRecord(JoinCommunityDto joinCommunityDto);

    /**
     *查看个人所加入的社团
     * @return List<Community>
     */
    List<Community> findByMyId(@Param("userId") String userId);

    /**
     * 退出自己的社团
     * @return Integer
     */
    Integer quitById(@Param("userId") String userId, @Param("communityId") Integer communityId);

    //修改归档内容
    void updateArchiveInfo(JoinCommunityDto joinCommunityDto);


}